package com.gosophia.govDoc.action.queryDoc;


import java.util.Date;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import com.gosophia.commons.PropertyFilter;
import com.gosophia.commons.PropertyFilter.OperatorType;
import com.gosophia.commons.web.action.BaseAjaxAction;
import com.gosophia.govDoc.common.DocumentMissionStatus;
import com.gosophia.holidayManagement.ws.HolidayManagementWebService;
import com.gosophia.taskManagement.dto.MissionDTO;
import com.gosophia.taskManagement.ws.TaskManagementWebService;

@Scope("prototype")
@Controller("GetPageDocMissAction")
public class GetPageDocMissAction extends BaseAjaxAction<MissionDTO>{

	private static final long serialVersionUID = 3748453043919774125L;
	@Autowired
	private TaskManagementWebService taskManagementWebService;
    @Autowired
    private HolidayManagementWebService holidayManagementWebService;
	private Integer pageNo;

    private Integer pageSize;

    private String importalString;
    
    private String remind;
    private String warn;
    private String noState;

	@Override
	public MissionDTO getDetailData() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public String _execute() throws Exception {
		   Long missionTypeId = 1008L;
		   if(pageNo==null) {
		    	pageNo = 1;
		    }
		    if(this.searchType.booleanValue() == false) {
	            if(searchString!=null && !"".equals(searchString)){
	                searchString = searchString.trim();
	            }
		    	page.setPageNo(pageNo);
		    	page.setPageSize(pageSize);
		    	this.page = taskManagementWebService.findRelationMissionSimpleByPage(missionTypeId, searchString, pageSize, pageNo, orderConditions, propertyFilters);
		    }else {
				if ("0".equals(remind) && "1".equals(warn) && noState == null) {
					// 提醒
					Date date = holidayManagementWebService.findTheAfterDay(
							new Date(), 2);
					PropertyFilter isNull = new PropertyFilter();
					isNull.setPropertyName("actualEndTime");
					isNull.setOperator(OperatorType.IS_NULL);
					PropertyFilter scheduleGE = new PropertyFilter(
							"scheduleEndDate", OperatorType.GE, new Date());
					PropertyFilter scheduleLE = new PropertyFilter(
							"scheduleEndDate", OperatorType.LE, date);
					isNull.and(scheduleGE.and(scheduleLE));
					// 预警
					PropertyFilter p = new PropertyFilter("actualEndTime",
							OperatorType.GT, "${scheduleEndDate}");
					PropertyFilter isNull2 = new PropertyFilter();
					isNull2.setPropertyName("actualEndTime");
					isNull2.setOperator(OperatorType.IS_NULL);
					p.or(isNull2.and(new PropertyFilter("scheduleEndDate",
							OperatorType.LT, new Date())));
					// 或
					isNull.or(p);
					propertyFilters.add(isNull);
				}
				if ("0".equals(remind) && warn == null && noState == null) {
					Date date = holidayManagementWebService.findTheAfterDay(
							new Date(), 2);
					PropertyFilter isNull = new PropertyFilter();
					isNull.setPropertyName("actualEndTime");
					isNull.setOperator(OperatorType.IS_NULL);
					PropertyFilter scheduleGE = new PropertyFilter(
							"scheduleEndDate", OperatorType.GE, new Date());
					PropertyFilter scheduleLE = new PropertyFilter(
							"scheduleEndDate", OperatorType.LE, date);
					isNull.and(scheduleGE.and(scheduleLE));
					propertyFilters.add(isNull);
				}
				if ("1".equals(warn) && remind == null && noState == null) {
					PropertyFilter p = new PropertyFilter("actualEndTime",
							OperatorType.GT, "${scheduleEndDate}");
					PropertyFilter isNull2 = new PropertyFilter();
					isNull2.setPropertyName("actualEndTime");
					isNull2.setOperator(OperatorType.IS_NULL);
					p.or(isNull2.and(new PropertyFilter("scheduleEndDate",
							OperatorType.LT, new Date())));
					propertyFilters.add(p);

				}
		    	page.setPageNo(pageNo);
		    	page.setPageSize(pageSize);
		    	this.page = taskManagementWebService.findRelationMissionAdvancedByPage(missionTypeId, pageSize, pageNo, propertyFilters, orderConditions);
		    }
		  
		    if(this.page.getTotalCount()<=0) {
		    	super.getRequestResult().setRsltCode("1");
		    }else {
		    	super.getRequestResult().setRsltCode("0");
		    }
		    
	        return SUCCESS;
	}

	public Integer getPageNo() {
		return pageNo;
	}

	public void setPageNo(Integer pageNo) {
		this.pageNo = pageNo;
	}

	public Integer getPageSize() {
		return pageSize;
	}

	public void setPageSize(Integer pageSize) {
		this.pageSize = pageSize;
	}

	public String getImportalString() {
		return importalString;
	}

	public void setImportalString(String importalString) {
		this.importalString = importalString;
	}

	public String getRemind() {
		return remind;
	}

	public void setRemind(String remind) {
		this.remind = remind;
	}

	public String getWarn() {
		return warn;
	}

	public void setWarn(String warn) {
		this.warn = warn;
	}

	public String getNoState() {
		return noState;
	}

	public void setNoState(String noState) {
		this.noState = noState;
	}
	
	
}
